package com.petdog.module.auth.service;

import com.petdog.common.dto.ApiResponse;
import com.petdog.module.auth.dto.CodeLoginRequest;
import com.petdog.module.auth.dto.LoginRequest;
import com.petdog.module.auth.dto.LoginResponse;
import com.petdog.module.auth.dto.RegisterRequest;
import com.petdog.module.auth.dto.SendVerificationCodeRequest;
import com.petdog.module.auth.dto.TokenRefreshRequest;

/**
 * 认证服务接口
 * 提供用户认证相关的业务逻辑
 */
public interface AuthService {
    
    /**
     * 用户登录（密码方式）
     * @param loginRequest 登录请求参数
     * @return 登录响应，包含JWT令牌等信息
     */
    LoginResponse login(LoginRequest loginRequest);
    
    /**
     * 用户登录（验证码方式）
     * @param codeLoginRequest 验证码登录请求参数
     * @return 登录响应，包含JWT令牌等信息
     */
    LoginResponse codeLogin(CodeLoginRequest codeLoginRequest);
    
    /**
     * 用户注册
     * @param registerRequest 注册请求参数
     * @return 注册后的登录响应
     */
    LoginResponse register(RegisterRequest registerRequest);
    
    /**
     * 刷新令牌
     * @param tokenRefreshRequest 刷新令牌请求参数
     * @return 新的登录响应
     */
    LoginResponse refreshToken(TokenRefreshRequest tokenRefreshRequest);
    
    /**
     * 发送登录验证码
     * @param email 接收验证码的邮箱
     * @return 操作结果
     */
    ApiResponse<String> sendLoginVerificationCode(String email);
    
    /**
     * 发送验证码
     * @param request 发送验证码请求参数
     * @return 操作结果
     */
    ApiResponse<String> sendVerificationCode(SendVerificationCodeRequest request);
}
